package com.yoshino.leetcode.oneHundred.twelveth;

import java.util.HashSet;
import java.util.Set;

class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if (l1 == null) {
            return l2;
        }
        if (l2 == null) {
            return l1;
        }
        ListNode root = new ListNode(-1), temp = root;
        while (l1 != null && l2 != null) {
            if (l1.val > l2.val) {
                temp.next = l2;
                l2 = l2.next;
            } else {
                temp.next = l1;
                l1 = l1.next;
            }
            temp = temp.next;
        }
        if (l1 != null) {
            temp.next = l1;
        } else {
            temp.next = l2;
        }
        return root.next;
    }

    ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        if (headA == null || headB == null) {
            return null;
        }
        ListNode s1 = headA, s2 = headB;
        while (s1 != null && s2 != null) {
            s1 = s1.next;
            s2 = s2.next;
        }
        while (s1 != null) {
            s1 = s1.next;
            headA = headA.next;
        }
        while (s2 != null) {
            s2 = s2.next;
            headB = headB.next;
        }
        while (headA != headB) {
            headA = headA.next;
            headB = headB.next;
        }
        return headA;
    }
}